
(define (problem roverprob1423)
        (:domain rover)
        (:objects general - lander colour - mode high_res - mode low_res - mode
         rover0 - rover rover1 - rover rover2 - rover rover3 - rover
         rover0store - store rover1store - store rover2store - store
         rover3store - store waypoint0 - waypoint waypoint1 - waypoint
         waypoint2 - waypoint waypoint3 - waypoint waypoint4 - waypoint
         waypoint5 - waypoint camera0 - camera camera1 - camera camera2 -
         camera camera3 - camera objective0 - objective objective1 - objective
         objective2 - objective)
        (:init (visible waypoint0 waypoint1) (visible waypoint1 waypoint0)
         (visible waypoint0 waypoint3) (visible waypoint3 waypoint0)
         (visible waypoint1 waypoint5) (visible waypoint5 waypoint1)
         (visible waypoint2 waypoint0) (visible waypoint0 waypoint2)
         (visible waypoint2 waypoint1) (visible waypoint1 waypoint2)
         (visible waypoint2 waypoint3) (visible waypoint3 waypoint2)
         (visible waypoint2 waypoint4) (visible waypoint4 waypoint2)
         (visible waypoint3 waypoint4) (visible waypoint4 waypoint3)
         (visible waypoint3 waypoint5) (visible waypoint5 waypoint3)
         (visible waypoint4 waypoint0) (visible waypoint0 waypoint4)
         (visible waypoint4 waypoint1) (visible waypoint1 waypoint4)
         (visible waypoint5 waypoint2) (visible waypoint2 waypoint5)
         (visible waypoint5 waypoint4) (visible waypoint4 waypoint5)
         (at_soil_sample waypoint1) (at_rock_sample waypoint2)
         (at_soil_sample waypoint3) (at_rock_sample waypoint3)
         (at_soil_sample waypoint4) (at_rock_sample waypoint4)
         (at_rock_sample waypoint5) (at_lander general waypoint0)
         (channel_free general) (at rover0 waypoint2) (available rover0)
         (store_of rover0store rover0) (empty rover0store)
         (equipped_for_soil_analysis rover0)
         (equipped_for_rock_analysis rover0)
         (can_traverse rover0 waypoint2 waypoint0)
         (can_traverse rover0 waypoint0 waypoint2)
         (can_traverse rover0 waypoint2 waypoint3)
         (can_traverse rover0 waypoint3 waypoint2)
         (can_traverse rover0 waypoint2 waypoint4)
         (can_traverse rover0 waypoint4 waypoint2)
         (can_traverse rover0 waypoint0 waypoint1)
         (can_traverse rover0 waypoint1 waypoint0)
         (can_traverse rover0 waypoint3 waypoint5)
         (can_traverse rover0 waypoint5 waypoint3) (at rover1 waypoint2)
         (available rover1) (store_of rover1store rover1) (empty rover1store)
         (equipped_for_rock_analysis rover1) (equipped_for_imaging rover1)
         (can_traverse rover1 waypoint2 waypoint0)
         (can_traverse rover1 waypoint0 waypoint2)
         (can_traverse rover1 waypoint2 waypoint3)
         (can_traverse rover1 waypoint3 waypoint2)
         (can_traverse rover1 waypoint2 waypoint5)
         (can_traverse rover1 waypoint5 waypoint2)
         (can_traverse rover1 waypoint0 waypoint1)
         (can_traverse rover1 waypoint1 waypoint0)
         (can_traverse rover1 waypoint3 waypoint4)
         (can_traverse rover1 waypoint4 waypoint3) (at rover2 waypoint2)
         (available rover2) (store_of rover2store rover2) (empty rover2store)
         (equipped_for_rock_analysis rover2) (equipped_for_imaging rover2)
         (can_traverse rover2 waypoint2 waypoint0)
         (can_traverse rover2 waypoint0 waypoint2)
         (can_traverse rover2 waypoint2 waypoint1)
         (can_traverse rover2 waypoint1 waypoint2)
         (can_traverse rover2 waypoint2 waypoint4)
         (can_traverse rover2 waypoint4 waypoint2)
         (can_traverse rover2 waypoint2 waypoint5)
         (can_traverse rover2 waypoint5 waypoint2)
         (can_traverse rover2 waypoint0 waypoint3)
         (can_traverse rover2 waypoint3 waypoint0) (at rover3 waypoint3)
         (available rover3) (store_of rover3store rover3) (empty rover3store)
         (equipped_for_soil_analysis rover3)
         (equipped_for_rock_analysis rover3) (equipped_for_imaging rover3)
         (can_traverse rover3 waypoint3 waypoint0)
         (can_traverse rover3 waypoint0 waypoint3)
         (can_traverse rover3 waypoint3 waypoint2)
         (can_traverse rover3 waypoint2 waypoint3)
         (can_traverse rover3 waypoint3 waypoint4)
         (can_traverse rover3 waypoint4 waypoint3)
         (can_traverse rover3 waypoint0 waypoint1)
         (can_traverse rover3 waypoint1 waypoint0)
         (can_traverse rover3 waypoint2 waypoint5)
         (can_traverse rover3 waypoint5 waypoint2) (on_board camera0 rover3)
         (calibration_target camera0 objective1) (supports camera0 colour)
         (supports camera0 high_res) (supports camera0 low_res)
         (on_board camera1 rover3) (calibration_target camera1 objective0)
         (supports camera1 colour) (supports camera1 high_res)
         (on_board camera2 rover1) (calibration_target camera2 objective0)
         (supports camera2 colour) (supports camera2 high_res)
         (supports camera2 low_res) (on_board camera3 rover2)
         (calibration_target camera3 objective1) (supports camera3 colour)
         (supports camera3 low_res) (visible_from objective0 waypoint0)
         (visible_from objective0 waypoint1)
         (visible_from objective0 waypoint2)
         (visible_from objective1 waypoint0)
         (visible_from objective2 waypoint0)
         (visible_from objective2 waypoint1)
         (visible_from objective2 waypoint2))
        (:goal
         (and (communicated_soil_data waypoint1)
              (communicated_soil_data waypoint3)
              (communicated_soil_data waypoint4)
              (communicated_rock_data waypoint5)
              (communicated_rock_data waypoint4)
              (communicated_image_data objective0 low_res)
              (communicated_image_data objective0 high_res)
              (communicated_image_data objective2 low_res)))
        (:constraints
         (and (preference a0 (always (at rover2 waypoint2)))
              (preference a1 (always (at rover1 waypoint2)))
              (preference a2 (always (at_rock_sample waypoint3)))
              (preference a3 (always (at_rock_sample waypoint2)))
              (preference a4 (always (empty rover2store)))
              (preference a5 (always (empty rover1store)))
              (preference e0 (sometime (at rover3 waypoint2)))
              (preference e1 (sometime (at rover3 waypoint4)))
              (preference e2 (sometime (at rover3 waypoint1)))
              (preference e3 (sometime (at rover2 waypoint5)))
              (preference e4 (sometime (at rover2 waypoint4)))
              (preference e5 (sometime (at rover2 waypoint0)))
              (preference e6 (sometime (at rover1 waypoint5)))
              (preference e7 (sometime (at rover1 waypoint3)))
              (preference e8 (sometime (at rover0 waypoint5)))
              (preference e9 (sometime (at rover0 waypoint4)))
              (preference e10 (sometime (at rover0 waypoint0)))
              (preference e11 (sometime (at rover0 waypoint1)))
              (preference e12 (sometime (have_soil_analysis rover3 waypoint4)))
              (preference e13 (sometime (have_soil_analysis rover3 waypoint3)))
              (preference e14 (sometime (have_soil_analysis rover3 waypoint1)))
              (preference e15 (sometime (have_soil_analysis rover0 waypoint4)))
              (preference e16 (sometime (have_soil_analysis rover0 waypoint3)))
              (preference e17 (sometime (have_soil_analysis rover0 waypoint1)))
              (preference e18 (sometime (have_rock_analysis rover3 waypoint4)))
              (preference e19 (sometime (full rover2store)))
              (preference e20 (sometime (have_rock_analysis rover2 waypoint5)))
              (preference e21 (sometime (have_rock_analysis rover2 waypoint4)))
              (preference e22 (sometime (have_rock_analysis rover1 waypoint5)))
              (preference e23 (sometime (have_rock_analysis rover1 waypoint3)))
              (preference e24 (sometime (have_rock_analysis rover1 waypoint2)))
              (preference e25 (sometime (have_rock_analysis rover0 waypoint5)))
              (preference e26 (sometime (have_rock_analysis rover0 waypoint4)))
              (preference e27 (sometime (calibrated camera1 rover3)))
              (preference e28 (sometime (calibrated camera0 rover3)))
              (preference e29 (sometime (calibrated camera3 rover2)))
              (preference e30
               (sometime (have_image rover3 objective2 low_res)))
              (preference e31
               (sometime (have_image rover3 objective0 high_res)))
              (preference e32
               (sometime (have_image rover3 objective0 low_res)))
              (preference e33
               (sometime (have_image rover2 objective0 low_res)))
              (preference e34
               (sometime (have_image rover1 objective2 low_res)))
              (preference e35
               (sometime (have_image rover1 objective0 low_res)))
              (preference e36
               (sometime (have_image rover1 objective0 high_res)))
              (preference o0 (at-most-once (at rover3 waypoint3)))
              (preference o1 (at-most-once (at rover3 waypoint0)))
              (preference o2 (at-most-once (at rover0 waypoint3)))
              (preference o3 (at-most-once (at rover0 waypoint2)))
              (preference o4 (at-most-once (empty rover3store)))
              (preference o5 (at-most-once (full rover3store)))
              (preference o6 (at-most-once (empty rover0store)))
              (preference o7 (at-most-once (full rover0store)))
              (preference o8 (at-most-once (full rover1store)))
              (preference o9 (at-most-once (calibrated camera2 rover1)))))
        (:metric minimize
         (+ (* (is-violated o9) 28)
            (* (is-violated o8) 32)
            (* (is-violated o7) 28)
            (* (is-violated o6) 32)
            (* (is-violated o5) 32)
            (* (is-violated o4) 32)
            (* (is-violated o3) 28)
            (* (is-violated o2) 32)
            (* (is-violated o1) 28)
            (* (is-violated o0) 28)
            (* (is-violated e36) 28)
            (* (is-violated e35) 32)
            (* (is-violated e34) 28)
            (* (is-violated e33) 28)
            (* (is-violated e32) 32)
            (* (is-violated e31) 32)
            (* (is-violated e30) 32)
            (* (is-violated e29) 28)
            (* (is-violated e28) 28)
            (* (is-violated e27) 32)
            (* (is-violated e26) 28)
            (* (is-violated e25) 32)
            (* (is-violated e24) 32)
            (* (is-violated e23) 32)
            (* (is-violated e22) 32)
            (* (is-violated e21) 32)
            (* (is-violated e20) 28)
            (* (is-violated e19) 28)
            (* (is-violated e18) 32)
            (* (is-violated e17) 32)
            (* (is-violated e16) 32)
            (* (is-violated e15) 28)
            (* (is-violated e14) 28)
            (* (is-violated e13) 28)
            (* (is-violated e12) 32)
            (* (is-violated e11) 32)
            (* (is-violated e10) 32)
            (* (is-violated e9) 28)
            (* (is-violated e8) 32)
            (* (is-violated e7) 32)
            (* (is-violated e6) 32)
            (* (is-violated e5) 28)
            (* (is-violated e4) 28)
            (* (is-violated e3) 28)
            (* (is-violated e2) 28)
            (* (is-violated e1) 32)
            (* (is-violated e0) 32)
            (* (is-violated a5) 28)
            (* (is-violated a4) 34)
            (* (is-violated a3) 28)
            (* (is-violated a2) 28)
            (* (is-violated a1) 28)
            (* (is-violated a0) 34)
	)))
